package com.parcial.data.fachadas;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.parcial.data.entidades.Alumno;
import com.parcial.data.util.Campo;
import com.parcial.data.util.Clave;

public class FachadaAlumno extends FachadaAbstracta<Alumno> {
	
	private static FachadaAlumno fachadaAlumno;
	
	public static FachadaAlumno getFachadaAlumno() {
		if(fachadaAlumno == null) {
			fachadaAlumno = new FachadaAlumno();
		}
		return fachadaAlumno;
	}
	
	private FachadaAlumno() {
	}
	
	@Override
	protected String obtenerNombreTabla() {
		return Alumno.class.getSimpleName();
	}
	
	@Override
	protected String obtenerOrderString() {
		Clave auxClave = new Clave();
		auxClave.setColumnas(Alumno.columnasClave());
		return auxClave.toOrderString();
	}

	@Override
	protected List<Campo> obtenerCampos(Alumno alumno) {
		List<Campo> campos = new ArrayList<Campo>();
		campos.add(new Campo(Integer.class, alumno.getIdAlumno()));
		campos.add(new Campo(String.class, alumno.getNombre()));
		campos.add(new Campo(String.class, alumno.getApellido()));
		campos.add(new Campo(String.class, alumno.getUsuario()));
		campos.add(new Campo(String.class, alumno.getContrasena()));
		campos.add(new Campo(Boolean.class, alumno.getRindio()));

		return campos;
	}

	@Override
	protected List<Alumno> convertirRS(ResultSet rs) {
		List<Alumno> alumnos = new ArrayList<Alumno>();
		try {
			while (rs.next()) {
				Alumno alu = new Alumno();
				alu.setIdAlumno(rs.getInt("idAlumno"));
				alu.setNombre(rs.getString("nombre"));
				alu.setApellido(rs.getString("apellido"));
				alu.setUsuario(rs.getString("usuario"));
				alu.setContrasena(rs.getString("contrasena"));
				alu.setRindio(rs.getBoolean("rindio"));
				alumnos.add(alu);
			}
		} catch (Exception e) {
			System.out.println("Error al obtener la lista de alumnos");
			System.out.println(e.getMessage());
			e.printStackTrace();
		}
		return alumnos;
	}

}
